﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //编写一个程序，以实现机器人的层次结构，此层次结构将至少包含
            //抽象类机器人类Robot、炒菜机器人类CookRobot、传菜机器人类DeliveryRobot。
            //Robot类应包含机器人姓名name字段、机器人工作的方法Working()，
            //该方法应该在子类中被实现，机器人工作的方式很多，所以Working()方法应该被定义为抽象方法。

            //可以在CookRobot中添加一个代表菜的类型的字段，用枚举类型；
            //在DeliveryRobot中添加一个代表连续工作时长的字段hours。
            //CookRobot和DeliveryRobot应实现具体的Working()方法。

            //在主类中定义一个方法，形参数据类型是string，返回值数据类型是Robot，
            //方法中实现如果传入的字符串是“炒菜”，那就返回CookRobot的实例（当然是要用Robot的引用指向的），
            //如果传入的字符串是“传菜”，那就返回DeliveryRobot的实例。

            //Main方法中：用户输入所选择的机器人的功能，根据用户的输入Robot执行对应的功能。

            while (true)
            {
                Console.WriteLine("请输入你要选择的机器人的功能:(1.炒菜 or 2.传菜)");
                string str = Console.ReadLine();
                
                Text(str);
           }
        }
        static void Text(string str)
        {
            char ch = char.Parse(str);
            switch (ch)
            {
                case '1':
                    CookRobot c1 = new CookRobot("炒菜机器人", Cook.剁椒鱼头);
                    CookRobot c2 = new CookRobot("炒菜机器人", Cook.红烧鲈鱼);
                    Output(c1);
                    Output(c2);
                    break;
                case '2':
                    DeliveryRobot d1 = new DeliveryRobot("传菜机器人",5);
                    DeliveryRobot d2 = new DeliveryRobot("传菜机器人", 3);
                    Output(d1);
                    Output(d2);
                    break;
                default:
                    Console.WriteLine("输入有误，请重新输入！");
                    break;
            }
        }
        static void Output(Robot r)
        {
            r.Working();
        }
    }
}
